.\" $OpenBSD: bgpctl.8,v 1.64 2014/08/14 19:08:21 schwarze Exp $
.\"
.\" Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: August 14 2014 $
.Dt BGPCTL 8
.Os
.Sh NAME
.Nm bgpctl
.Nd control the Border Gateway Protocol daemon
.Sh SYNOPSIS
.Nm bgpctl
.Op Fl n
.Op Fl s Ar socket
.Ar command
.Op Ar argument ...
.Sh DESCRIPTION
The
.Nm
program controls the
.Xr bgpd 8
daemon.
Commands may be abbreviated to the minimum unambiguous prefix; for example,
.Cm s s
for
.Cm show summary .
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl n
Show neighbors' IP addresses instead of their description.
.It Fl s Ar socket
Use
.Ar socket
instead of the default
.Pa /var/run/bgpd.sock
to communicate with
.Xr bgpd 8 .
.El
.Pp
The commands are as follows:
.Bl -tag -width xxxxxx
.It Xo
.Cm fib
.Op Cm table Ar number
.Cm couple
.Xc
Insert the learned routes into the specified Forwarding Information Base
a.k.a. the kernel routing table.
.It Xo
.Cm fib
.Op Cm table Ar number
.Cm decouple
.Xc
Remove the learned routes from the specified Forwarding Information Base
a.k.a. the kernel routing table.
.It Xo
.Cm irrfilter
.Op Ar options
.Ar as
.Op Ar arguments
.Xc
Get the
.Em aut-num
object from the
.Em Internet Routing Registry
and generate bgpd filters from the policy specified therein.
The aut-num object as well as the associated as-set and route objects
have to be in RPSL format.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl o Ar directory
Use
.Ar directory
to write the filter files to.
.It Fl 4
Fetch only IPv4 prefixes from the registry.
.It Fl 6
Fetch only IPv6 prefixes from the registry.
.El
.It Cm log brief
Disable verbose debug logging.
.It Cm log verbose
Enable verbose debug logging.
.It Cm neighbor Ar peer Cm clear
Stop and restart the BGP session to the specified neighbor.
.Ar peer
may be the neighbor's address or description.
.It Cm neighbor Ar peer Cm destroy
Destroy a previously cloned peer.
The peer must be down before calling this function.
.Ar peer
may be the neighbor's address or description.
.It Cm neighbor Ar peer Cm down
Take the BGP session to the specified neighbor down.
.Ar peer
may be the neighbor's address or description.
.It Cm neighbor Ar peer Cm refresh
Request the neighbor to re-send all routes.
Note that the neighbor is not obliged to re-send all routes, or any routes at
all, even if it announced the route refresh capability.
.Ar peer
may be the neighbor's address or description.
.It Cm neighbor Ar peer Cm up
Take the BGP session to the specified neighbor up.
.Ar peer
may be the neighbor's address or description.
.It Cm network add Ar prefix Op Ar arguments
Add the specified prefix to the list of announced networks.
It is possible to set various path attributes with additional
.Ar arguments .
.It Xo
.Cm network bulk
.Op Ar arguments
.Op Cm add
.Xc
Bulk add specified prefixes to the list of announced networks.
Prefixes should be sent via stdin.
It is possible to set various path attributes with additional
.Ar arguments .
If neither
.Cm add
or
.Cm delete
is given,
.Cm add
is the default.
.It Cm network bulk delete
Bulk remove the specified prefixes from the list of announced networks.
Prefixes should be sent via stdin.
.It Cm network delete Ar prefix
Remove the specified prefix from the list of announced networks.
.It Cm network flush
Remove all dynamically added prefixes from the list of announced networks.
.It Cm network mrt file Ar file filter
Import networks from an MRT table dump for debugging purposes.
.Ar filter
can be specified similarly to the
.Ar show mrt
command.
Only networks matching the filter will be imported.
.It Cm network show Ar family
Show all announced networks.
.Ar family ,
if given, limits the output to the given address family.
The supported families are
.Em inet
and
.Em inet6 .
.It Cm reload
Reload the configuration file.
.It Cm show fib Ar filter
Show routes from
.Xr bgpd 8 Ns 's
view of the Forwarding Information Base.
.Ar filter
can be an IP address, in which case the route to this address is shown,
or a flag:
.Pp
.Bl -tag -width tableXnumber -compact
.It Cm connected
Show only connected routes.
.It Cm static
Show only static routes.
.It Cm bgp
Show only routes originating from
.Xr bgpd 8
itself.
.It Cm nexthop
Show only routes required to reach a BGP nexthop.
.It Cm inet
Show only IPv4 routes.
.It Cm inet6
Show only IPv6 routes.
.It Cm table Ar number
Show the routing table with ID
.Ar number
instead of the default routing table with ID 0.
.El
.It Cm show interfaces
Show the interface states.
.It Xo
.Cm show mrt
.Op Ar options
.Ar filter
.Xc
Show routes from an MRT table dump file.
.Ar filter
can be an IP address, a CIDR prefix, an AS filter, a combination or nothing:
.Pp
.Bl -tag -width "address/len all" -compact
.It Ar address
Show best matching route for address.
.It Ar address Ns Li / Ns Ar len
Show RIB entry for this CIDR prefix.
.It Xo
.Ar address Ns Li / Ns Ar len
.Cm all
.Xc
Show all entries in the specified range.
.\".It Ar address/len Cm longer-prefixes
.It Cm as Ar as
Show all entries with
.Ar as
anywhere in the AS path.
.It Cm empty-as
Show all entries that are internal routes with no AS's in the AS path.
.It Cm neighbor Ar ip
Show only entries from the specified peer.
.It Cm peer-as Ar as
Show all entries with
.Ar as
as leftmost AS.
.It Cm source-as Ar as
Show all entries with
.Ar as
as rightmost AS.
.It Cm transit-as Ar as
Show all entries with
.Ar as
anywhere but rightmost.
.El
.Pp
Additionally, the following
.Ar options
are defined:
.Pp
.Bl -tag -width "file name" -compact
.It Cm detail
Show more detailed output for matching routes.
.It Ar family
Limit the output to the given address family.
.It Cm file Ar name
Read the MRT dump from file
.Ar name
instead of using stdin.
.El
.Pp
Multiple options and filters can be used at the same time.
.It Cm show neighbor Ar peer modifier
Show detailed information about the neighbor identified by
.Ar peer ,
which may be the neighbor's address or description,
according to the given
.Ar modifier :
.Pp
.Bl -tag -width messages -compact
.It Cm messages
Show statistics about sent and received BGP messages.
.It Cm terse
Show statistics in an easily parseable terse format.
The printed numbers are the sent and received open, sent and received
notifications, sent and received updates, sent and received keepalives, and
sent and received route refresh messages plus the current and maximum
prefix count, the number of sent and received updates, and withdraws.
.It Cm timers
Show the BGP timers.
.El
.It Cm show nexthop
Show the list of BGP nexthops and the result of their validity check.
.It Xo
.Cm show rib
.Op Ar options
.Ar filter
.Xc
Show routes from the
.Xr bgpd 8
Routing Information Base.
.Ar filter
can be an IP address, a CIDR prefix, an AS filter or nothing:
.Pp
.Bl -tag -width "address/len all" -compact
.It Ar address
Show best matching route for address.
.It Ar address Ns Li / Ns Ar len
Show RIB entry for this CIDR prefix.
.It Xo
.Ar address Ns Li / Ns Ar len
.Cm all
.Xc
Show all entries in the specified range.
.\".It Ar address/len Cm longer-prefixes
.It Cm as Ar as
Show all entries with
.Ar as
anywhere in the AS path.
.It Cm community Ar community
Show all entries with community
.Ar community .
.It Cm empty-as
Show all entries that are internal routes with no AS's in the AS path.
.It Cm memory
Show RIB memory statistics.
.It Cm neighbor Ar peer
Show only entries from the specified peer.
.It Cm peer-as Ar as
Show all entries with
.Ar as
as leftmost AS.
.It Cm source-as Ar as
Show all entries with
.Ar as
as rightmost AS.
.It Cm summary
This is the same as the
.Ic show summary
command.
.It Cm table Ar rib
Show only entries from the specified RIB table.
.It Cm transit-as Ar as
Show all entries with
.Ar as
anywhere but rightmost.
.El
.Pp
Additionally, the following
.Ar options
are defined:
.Pp
.Bl -tag -width "detail" -compact
.It Cm selected
Show only selected routes.
.It Cm detail
Show more detailed output for matching routes.
.It Ar family
Limit the output to the given address family.
.It Cm in
Show routes from the unfiltered Adj-RIB-In.
This is only possible if
.Em softreconfig in
is enabled for the neighbor.
.It Cm out
Show the filtered routes sent to a neighbor also known as Adj-RIB-Out.
.El
.Pp
Options are silently ignored when used together with
.Ar summary
or
.Ar memory .
Multiple options can be used at the same time and the
.Ar neighbor
filter can be combined with other filters.
.It Cm show summary
Show a list of all neighbors, including information about the session state
and message counters.
.It Cm show summary terse
Show a list of all neighbors, including information about the session state,
in a terse format.
.It Cm show tables
Show a list of all currently loaded fib routing tables.
.El
.Sh FILES
.Bl -tag -width "/var/run/bgpd.sockXXX" -compact
.It Pa /etc/bgpd.conf
default
.Xr bgpd 8
configuration file
.It Pa /var/run/bgpd.sock
default
.Xr bgpd 8
control socket
.El
.Sh SEE ALSO
.Xr bgpd.conf 5 ,
.Xr bgpd 8 ,
.Xr bgplg 8 ,
.Xr bgplgsh 8
.Sh STANDARDS
.Rs
.%A C. Alaettinoglu
.%A C. Villamizar
.%A E. Gerich
.%A D. Kessens
.%A D. Meyer
.%A T. Bates
.%A D. Karrenberg
.%A M. Terpstra
.%D June 1999
.%R RFC 2622
.%T Routing Policy Specification Language (RPSL)
.Re
.Sh HISTORY
The
.Nm
program first appeared in
.Ox 3.5 .
irrfilter mode was added in
.Ox 4.1 .
